Modern day computer systems are ubiquitous, and these computer systems can have different shapes and sizes, from personal computers (e.g., work stations, laptops, gaming consoles) to specialized computers (e.g., high performance networking equipment), to super computers (e.g., highly specialized computers or clusters of computers used to perform computationally intensive tasks). Designing computer systems and architectures is not a trivial task. Objectives for various designs can include speed, cost, complexity, and security.